#ifndef DEFS_H
#define DEFS_H

#include <QString>
#include <QStringList>
#include <QVariant>
#include <QPoint>
#include <math.h>

#define UkrString QString::fromUtf8
#define len(p1,p2) (int) sqrt( pow(p1.x() - p2.x(), 2) + pow(p1.y() - p2.y(), 2) )

const QString OrganisationName = QString("Trolas");
const QString ApplicationName = QString("QRDNK");
const QString ApplicationVersion = QString("0.1");

const QString DateFormat = QString("dd.MM.yyyy");   // формат дати
const QString SqlDateFormat = QString("dd-MM-yyyy");
const QString ORGANIZATION = QString("TRO!PRO");    // назва організаації
const QString APP_NAME = QString("QRDNK");          // назва програми
const QString InOutFileTypes =
        UkrString("Файл даних пацієнта (*.zip)");
const QString InOutPicturesTypes =
        UkrString("Файл зображення (*.png *.jpg *.jpeg *.bmp)");
const QStringList ImageFileFilter =
        QStringList() << "*.png" << "*.jpg" << "*.jpeg" << "*.bmp";

const QString NOT_CORRECT = UkrString("#некоректно");

const int PACIENT_VERSION = 2;

const int PERCISION = 2;

const QString checked = QString("&#9745;");
const QString unChecked = QString("&#9744;");
const QString mDash = QString("&mdash;");

QString doubleToQString(const double x);

const int NotInDataBase = -1;

const int PacientFieldCount = 16;

enum PacientFields
{
    PF_Id = 0,      // 0.
    PF_FName,       // 1.
    PF_MName,       // 2.
    PF_LName,       // 3.
    PF_Sex,         // 4.
    PF_Dob,         // 5.
    PF_HFather,     // 6.
    PF_HMother,     // 7.
    PF_BloodType,   // 8.
    PF_BloodRh,     // 9.
    PF_Region,      // 10.
    PF_Town,        // 11
    PF_Comment,     // 12.
    PF_Smoke,       // 13.
    PF_Alko,        // 14.
    PF_Narco        // 15.
};

const QStringList PrognozStrings = QStringList()
        << UkrString("Не враховувати")
        << UkrString("Враховувати");

const QStringList FallOperationTypes = QStringList()
        << UkrString("Апарат Ілізарова")
        << UkrString("Шпице-стержневий апарат");

const QStringList LimbStrings = QStringList()
        << UkrString("Ліва")
        << UkrString("Права");

//
const unsigned short OperationLocationCount = 4;
enum OperationLocation
{
    OL_Vgk = 0,
    OL_Mgk,
    OL_Stegno,
    OL_Stopa
};

const QStringList OperationBones = QStringList()
        << UkrString("ВГК")
        << UkrString("МГК")
        << UkrString("Стегно")
        << UkrString("Стопа");

//
const unsigned short OperationPositionCount = 3;
enum OperationPosition
{
    OP_Top = 0,
    OP_Middle,
    OP_Bottom
};

const QStringList OperationLocations = QStringList()
        << UkrString("Верхня третина")
        << UkrString("Середня третина")
        << UkrString("Нижня третина");


//
const unsigned short OperationColCount = 7;
enum OperationColumn
{
    OC_Date = 0,    // 0. Дата
    OC_Age,         // 1. Вік
    OC_Limb,        // 2. Кінцівка (вибір: ліва, права)
    OC_Bone,        // 3. Кістка
    OC_Location,    // 4. Локалізація
    OC_Method,      // 5. Спосіб подовження
    OC_Comment      // 6. Коментар
};

const QStringList OperationColStrings = QStringList()
        << UkrString("Дата")        // 0
        << UkrString("Вік")         // 1
        << UkrString("Кінцівка")    // 2
        << UkrString("Кістка")      // 3
        << UkrString("Локалізація") // 4
        << UkrString("Спосіб\nподовження")     // 5
        << UkrString("Коментар");              // 6

const unsigned short InspectionColCount = 14;
enum InspectionColumn
{
    IC_Date = 0,    // 0. дата
    IC_Age,         // 1. вік
    IC_Limb,        // 2. кінцівка (вибір: ліва, права)
    IC_UStegno,     // 3. уражене стегно (число см)
    IC_ZStegno,     // 4. здорове стегно (число см)
    IC_UVgk,        // 5. уражена велика гомілкова кістка (ВГК) (число см)
    IC_ZVgk,        // 6. здорова велика гомілкова кістка (число см)
    IC_UMgk,        // 7. уражена мала гомілкова кістка (МГК) (число см)
    IC_ZMgk,        // 8. здорова мала гомілкова кістка (МГК) (число см)
    IC_Stopa,       // 9. стопа (число см)
    IC_Promeni,     // 10. відсутність променів (множинний вибір: І, ІІ, ІІІ, ІV, V)
    IC_Weight,      // 11. вага
    IC_Height,      // 12. зріст
    IC_Prognoz      // 13. прогноз
};

const QStringList InspectionColStrings = QStringList()
        << UkrString("Дата")        // 0
        << UkrString("Вік")         // 1
        << UkrString("Кінцівка")    // 2
        << UkrString("Уражене\nстегно (см)")  // 3
        << UkrString("Здорове\nстегно (см)")  // 4
        << UkrString("Уражена\nВГК (см)")     // 5
        << UkrString("Здорова\nВГК (см)")     // 6
        << UkrString("Уражена\nМГК (см)")     // 7
        << UkrString("Здорова\nМГК (см)")     // 8
        << UkrString("Стопа (см)")       // 9
        << UkrString("Відсутність\nпроменів") // 10
        << UkrString("Вага (кг)") // 11
        << UkrString("Зріст (см)") // 12
        << UkrString("Прогноз."); // 12


const QStringList BloodTypes = QStringList()
        << UkrString("O(I)")
        << UkrString("A(II)")
        << UkrString("B(III)")
        << UkrString("AB(IV)");

const QStringList BloodRh = QStringList()
        << UkrString("Rh+")
        << UkrString("Rh-");



const int RENT_COL_COUNT = 4;
enum {
    RentName = 0,
    RentSrc,
    RentPpc,
    RentComment
};

const QStringList RentgenColStrings = QStringList()
        << UkrString("Назва")
        << UkrString("Файл")
        << UkrString("Пікс./см.")
        << UkrString("Коментар");

const QStringList RegionStrings = QStringList()
        << UkrString("Автономна Республіка Крим")
        << UkrString("Вінницька область")
        << UkrString("Волинська область")
        << UkrString("Дніпропетровська область")
        << UkrString("Донецька область")
        << UkrString("Житомирська область")
        << UkrString("Закарпатська область")
        << UkrString("Запорізька область")
        << UkrString("Івано-Франківська область")
        << UkrString("Київська область")
        << UkrString("Кіровоградська область")
        << UkrString("Луганська область")
        << UkrString("Львівська область")
        << UkrString("Миколаївська область")
        << UkrString("Одеська область")
        << UkrString("Полтавська область")
        << UkrString("Рівненська область")
        << UkrString("Сумська область")
        << UkrString("Тернопільська область")
        << UkrString("Харківська область")
        << UkrString("Херсонська область")
        << UkrString("Хмельницька область")
        << UkrString("Черкаська область")
        << UkrString("Чернівецька область")
        << UkrString("Чернігівська область")
        << UkrString("м. Київ")
        << UkrString("м. Севастополь");

#endif // DEFS_H
